Back out changes to netif backend messaging to set vifname.
Try using 'ip link' instead.
Signed-off-by: Mike Wray <mike.wray@hp.com>
netif_t **pnetif, *netif;
char name[IFNAMSIZ] = {};
- if(create->vifname[0] == '\0'){
- snprintf(name, IFNAMSIZ - 1, "vif%u.%u", domid, handle);
- } else {
- snprintf(name, IFNAMSIZ - 1, "%s", create->vifname);
- }
+ snprintf(name, IFNAMSIZ - 1, "vif%u.%u", domid, handle);
dev = alloc_netdev(sizeof(netif_t), name, ether_setup);
if ( dev == NULL )
{
C2P(netif_be_create_t, domid, Int, Long);
C2P(netif_be_create_t, netif_handle, Int, Long);
C2P(netif_be_create_t, status, Int, Long);
- C2P(netif_be_create_t, vifname, String, String);
return dict;
case TYPE(CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY):
C2P(netif_be_destroy_t, domid, Int, Long);
P2C(netif_be_create_t, mac[3], u8);
P2C(netif_be_create_t, mac[4], u8);
P2C(netif_be_create_t, mac[5], u8);
- P2CSTRING(netif_be_create_t, vifname);
break;
case TYPE(CMSG_NETIF_BE, CMSG_NETIF_BE_DESTROY):
P2C(netif_be_destroy_t, domid, u32);
args = ' '.join(args)
os.system(script + ' ' + args)
+def set_vif_name(vif_old, vif_new):
+ if vif_old == vif_new:
+ vif = view_new
+ if os.system("ip link show %s" % vif_old) == 0:
+ os.system("ip link set %s down" % vif_old)
+ os.system("ip link set %s name %s" % (vif_old, vif_new))
+ os.system("ip link set %s up" % vif_new)
+ if os.system("ip link show %s" % vif_new) == 0:
+ vif = vif_new
+ else:
+ vif = vif_old
+ return vif
+
def vifctl(op, vif=None, script=None, domain=None, mac=None, bridge=None, ipaddr=[]):
"""Call a vif control script.
Xend calls this when bringing vifs up or down.
self.vifname = sxp.child_value(config, 'vifname')
if self.vifname is None:
- self.vifname = "vif%d.%d" % (self.controller.dom, self.vif)
+ self.vifname = self.default_vifname()
if len(self.vifname) > 15:
raise XendError('invalid vifname: too long: ' + self.vifname)
mac = self._get_config_mac(config)
"""
return self.vifname
+ def default_vifname(self):
+ return "vif%d.%d" % (self.controller.dom, self.vif)
+
def get_mac(self):
"""Get the MAC address as a string.
"""
@param op: operation name (up, down)
@param vmname: vmname
"""
+ if op == 'up':
+ Vifctl.set_vif_name(self.default_vifname(), self.vifname)
Vifctl.vifctl(op, **self.vifctl_params(vmname=vmname))
vnet = XendVnet.instance().vnet_of_bridge(self.bridge)
if vnet:
{ 'domid' : self.controller.dom,
'netif_handle' : self.vif,
'mac' : self.mac,
- 'vifname' : self.vifname
+ #'vifname' : self.vifname
})
self.getBackendInterface().writeRequest(msg, response=d)
return d
u32 netif_handle; /* 4: Domain-specific interface handle. */
u8 mac[6]; /* 8 */
u16 __pad1; /* 14 */
- char vifname[16]; /* 16 */
/* OUT */
- u32 status; /* 32 */
-} PACKED netif_be_create_t; /* 36 bytes */
+ u32 status; /* 16 */
+} PACKED netif_be_create_t; /* 20 bytes */
/*
* CMSG_NETIF_BE_DESTROY: